package com.xiu.travel.security.service.impl;

import com.xiu.travel.other.SysRoleConvertor;
import com.xiu.travel.other.SysRoleDTO;
import com.xiu.travel.other.SysRoleVO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xiu.travel.entity.SysRole;
import com.xiu.travel.security.mapper.SysRoleMapper;
import com.xiu.travel.security.service.SysRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 系统角色表 服务实现类
 * </p>
 *
 * @author YuLing
 * @since 2023-10-13
 */
@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {

  /**
    * 保存
    *
    * @param dto 参数
    * @return 保存结果
    */
    @Override
    public boolean saveOne(SysRoleDTO dto) {
        return this.save(SysRoleConvertor.INSTANCE.toEntity(dto));
    }

  /**
    * 修改
    *
    * @param dto 参数
    * @return 修改结果
    */
    @Override
    public boolean updateById(SysRoleDTO dto) {
        return this.updateById(SysRoleConvertor.INSTANCE.toEntity(dto));
    }

    /**
     * 根据主键查询VO
     *
     * @param id 主键`

     * @return VO
     */
     @Override
     public SysRoleVO getByPk(Long id) {
         SysRole domain = this.getById(id);
         return SysRoleConvertor.INSTANCE.toVO(domain);
     }

     /**
     * 根据主键删除
     *
     * @param id) 主键
     * @return 删除结果
     */
     @Override
     public Boolean deleteByPk(Long id) {
         return this.removeById(id);
     }

    /**
    * 支持分页的dto条件查询
    *
    * @param page  分页组件
    * @param param 查询参数
    * @return IPage
    */
    @Override
    public IPage<SysRoleVO> selectPageByDto(IPage<SysRole> page, SysRoleDTO param) {
        // todo 根据实际情况组装查询where条件
        QueryWrapper<SysRole> queryWrapper = Wrappers.query();
        IPage<SysRole> iPage = this.getBaseMapper().selectPage(page, queryWrapper);
        return iPage.convert(SysRoleConvertor.INSTANCE::toVO);
    }
}
